The aim of this project is tell a story about AirBnB listings through graphs in plotly package and dplyr packages in R.
Housing Crisis in Ireland is a hot topic at the moment, which is affecting vast number of people, both young and old. AirBnB is the leading short-term lease of a private property website, where individuals place their homes on AirBnB to lease it to tourists on a short-term basis.
In this report, I will be examining the impact of AirBnB on Irish Housing Crisis, by analysing AirBnB listings data by examining the RTZs from Residential Tenancies Board, Irish housing report from Daft.ie and the Homelessness Report from the Irish government.
To fully take advantage the beauty of plotly interactivity, please knit this file into a HTML file. This will allow you, as the reader, to interact with the graphs. If the project in knitted into a word document, then the graphs will not be displayed, only tables will be displayed, which were created using dplyr.
Please note: two Rmd files were submitted, one analysing AirBnB data, the other treating and extracting important information from ‘calendar.csv’. That dataset that has over 9 million rows, which affected computer run time, knitting time and code execution, so it was summarised and two datasets emerged from that dataset, which were used in this report.
Due to the 9 million rows in calendar.csv, it was decided to treat this dataset outside of this analysis due to the size of it.
Presentation
There is a huge housing crisis in Ireland, which has been defined as a shortage of affordable accommodation for renting or buying. Irish government has made attempts to reduce the housing crisis with plans of affordable and social housing, however, lobbyists criticise the government for late intervention and lack of innovative solutions. Both young adults (under 35 years old) and more older adults are worrying about not being able to afford a home because of rent prices and increasing house prices.
Rent prices all over Ireland are increasing and Irish people worry about the affordability of rent, considering in areas like Dublin, individuals can pay up to 50% of their salary for rent. This is very nerve-wracking experience for the tenants. Daft.ie is the leading property website in Ireland, which publishes reports on the Irish housing market every quarter. For this next dataset, the report Q2 2021 was used to find out the rent in each town and city in Ireland (Lyons, 2021) .
To deal with rising rents and lack of affordable rental units, the government introduced Rent Pressure Zones (RPZs). These are areas located in parts of the country where rents are highest and rising, and where households have the greatest difficulty finding affordable accommodation (Residential Tenancies Board, 2021). Currently, there are six Local Authority Areas and 48 Local Electoral Areas (LEA) which have been designated as RTZs. In these areas, the rent cannot be increased by more than general inflation. The list is available to be viewed on Residential Tenancies Board (RTB) (Residential Tenancies Board, 2021).
Due to the Irish rent prices, more and more individuals are loosing their homes and end up homeless on the streets. Some are homeless and are recoded in the data collected by the Irish government by Simon Community and Focus Ireland. However, there is a cohort of homeless people who live on couches of friends and families are not represented in the data. As the second quarter of 2021, there are over 4,000 adults homeless in Dublin. Homeless Report, which is published every month, captures homeless statistics (Department of Housing, Local Government and Heritage, 2021).
AirBnB hosts and AirBnB, itself, have been strongly criticised for the increase of listings for short-term leasing for tourism. It has been reported that over 30,000 Irish listings on the site in Ireland for short-term lease (Pope, 2021). The article from The Irish Times continues to state that nearly half of those listings are rooms in private homes and over 10,000 entire homes are available all-year-round.
There have been talks of the Irish government to “bring legislation to create new measures that would target at least some of those properties and may see them return to the long-term rental market. Any moves which curtail the availability of AirBnB in popular tourism destinations around the country are likely to have a knock-on impact on accommodation availability and prices once international tourism resumes in a significant way in the post-pandemic period” (Pope, 2021). At the start of the pandemic, figures from estate agent Sherry FitzGerald show the number of properties available for rent in Dublin rose from 1,593 in November 2019 to 3,039 by the end March 2020 (Burke-Kennedy, 2021).
A lot of thought was brought to decided how to analyse and visualise the AirBnB data to answer the research questions above, so the following questions were developed as a lens to aid answering above questions.
Dataset used about properties listed on AirBnB in Ireland up to 21st October 2021. It was downloaded from http://insideAirBnB.com/get-the-data.html (listing.csv).
Data Dictionary was summarised from https://docs.google.com/spreadsheets/d/1iWCNJcSutYqpULSQHlNyGInUvHg2BoUGoNRIGa6Szc4/edit#gid=982310896
This dataset contains information about the AirBnB Listing such as listing id, host id, name, number of reviews, daily price. More columns will be presented in Data Understanding section.
# reading the csv
df = read.csv('listings.csv')
In ‘df’ dataset, there are 25977 rows and 18 columns. Columns names are id, name, host_id, host_name, neighbourhood_group, neighbourhood, latitude, longitude, room_type, price, minimum_nights, number_of_reviews, last_review, reviews_per_month, calculated_host_listings_count, availability_365, number_of_reviews_ltm, license.
#check the class of df
class(df)
## [1] "data.frame"
#check the column names for df
colnames(df)
## [1] "id" "name"
## [3] "host_id" "host_name"
## [5] "neighbourhood_group" "neighbourhood"
## [7] "latitude" "longitude"
## [9] "room_type" "price"
## [11] "minimum_nights" "number_of_reviews"
## [13] "last_review" "reviews_per_month"
## [15] "calculated_host_listings_count" "availability_365"
## [17] "number_of_reviews_ltm" "license"
# examining the structure in df
str(df)
## 'data.frame': 25977 obs. of 18 variables:
## $ id : int 39788249 11604537 49687964 36327396 42562547 9913012 49958946 8522094 11439644 5740595 ...
## $ name : chr "Comfortable family home" "Large 3 Bedroom Period House" "Double room easy access to Dublin City centre" "2 bedrooms terraced house/ Petite maison de ville" ...
## $ host_id : int 305457271 61410545 400749134 107522669 100253602 50433198 402865939 1130726 28736039 790601 ...
## $ host_name : chr "John" "Anne" "Ciara" "Manue" ...
## $ neighbourhood_group : chr "Dublin City Council" "Dublin City Council" "Dublin City Council" "Dublin City Council" ...
## $ neighbourhood : chr "Ballyfermot-Drimnagh LEA-5" "Ballyfermot-Drimnagh LEA-5" "Ballyfermot-Drimnagh LEA-5" "Ballyfermot-Drimnagh LEA-5" ...
## $ latitude : num 53.3 53.3 53.3 53.3 53.3 ...
## $ longitude : num -6.36 -6.32 -6.32 -6.34 -6.32 ...
## $ room_type : chr "Private room" "Entire home/apt" "Private room" "Entire home/apt" ...
## $ price : int 24 100 25 70 40 80 18 55 80 229 ...
## $ minimum_nights : int 4 3 1 2 1 14 6 3 4 3 ...
## $ number_of_reviews : int 1 58 0 0 2 18 0 98 10 12 ...
## $ last_review : chr "2019-12-07" "2021-07-28" "" "" ...
## $ reviews_per_month : num 0.04 0.85 NA NA 0.1 0.36 NA 1.34 0.15 0.38 ...
## $ calculated_host_listings_count: int 1 1 1 1 1 1 1 1 1 5 ...
## $ availability_365 : int 0 0 0 0 0 0 0 0 0 273 ...
## $ number_of_reviews_ltm : int 0 6 0 0 0 0 0 0 0 4 ...
## $ license : logi NA NA NA NA NA NA ...
# examining the top 5 rows in df
head(df)
# examining summary of all numeric columns in df
summary(df)
## id name host_id host_name
## Min. : 11532 Length:25977 Min. : 42467 Length:25977
## 1st Qu.:17495606 Class :character 1st Qu.: 32298580 Class :character
## Median :27348635 Mode :character Median : 91525007 Mode :character
## Mean :28636821 Mean :127168886
## 3rd Qu.:41761080 3rd Qu.:195517984
## Max. :52914686 Max. :428290129
##
## neighbourhood_group neighbourhood latitude longitude
## Length:25977 Length:25977 Min. :51.43 Min. :-10.540
## Class :character Class :character 1st Qu.:52.47 1st Qu.: -9.288
## Mode :character Mode :character Median :53.32 Median : -8.096
## Mean :53.15 Mean : -7.936
## 3rd Qu.:53.46 3rd Qu.: -6.287
## Max. :55.38 Max. : -6.014
##
## room_type price minimum_nights number_of_reviews
## Length:25977 Min. : 0.0 Min. : 1.000 Min. : 0.00
## Class :character 1st Qu.: 60.0 1st Qu.: 1.000 1st Qu.: 3.00
## Mode :character Median : 95.0 Median : 2.000 Median : 13.00
## Mean : 219.9 Mean : 4.729 Mean : 37.88
## 3rd Qu.: 150.0 3rd Qu.: 3.000 3rd Qu.: 44.00
## Max. :1173721.0 Max. :1125.000 Max. :1322.00
##
## last_review reviews_per_month calculated_host_listings_count
## Length:25977 Min. : 0.010 Min. : 1.000
## Class :character 1st Qu.: 0.290 1st Qu.: 1.000
## Mode :character Median : 0.860 Median : 1.000
## Mean : 1.684 Mean : 6.708
## 3rd Qu.: 1.970 3rd Qu.: 3.000
## Max. :115.000 Max. :216.000
## NA's :3439
## availability_365 number_of_reviews_ltm license
## Min. : 0.0 Min. : 0.000 Mode:logical
## 1st Qu.: 0.0 1st Qu.: 0.000 NA's:25977
## Median :137.0 Median : 1.000
## Mean :154.1 Mean : 6.163
## 3rd Qu.:301.0 3rd Qu.: 8.000
## Max. :365.0 Max. :366.000
##
| Field | Type | Description |
|---|---|---|
| id | integer | AirBnB’s unique identifier for the listing |
| name | text | Title of the property on AirBnB |
| host_id | interger | AirBnB’s unique identifier for the host |
| host_name | text | Host’s name |
| neighbourhood | text | Local Electoral Areas (LEAs) |
| neighbourhood_group | text | County or City Council |
| latitude | numeric | Uses the World Geodetic System (WGS84) projection for latitude and longitude |
| longitude | numeric | Uses the World Geodetic System (WGS84) projection for latitude and longitude |
| room_type | string | Entire house/apt, Private room, Shared room, Hotel room |
| price | currency | Daily price in local currency |
| minimum_nights | integer | minimum number of night stay for the listing (calendar rules may be different) |
| number_of_reviews | integer | The number of reviews the listing has |
| last_review | date | The date of the last/newest review |
| calculated_host_listings_count | integer | The number of listings the host has in the current scrape, in the city/region geography |
| availability_365 | integer | availability_x. The availability of the listing x days in the future as determined by the calendar. Note a listing may be available because it has been booked by a guest or blocked by the host |
| number_of_reviews_ltm | integer | The number of reviews the listing has (in the last 12 months) |
| licence | string | Unclear from data dictionary provided by AirBnB |
Dateset ‘summarise_df’ was created from ‘calendar.csv’, which was downloaded from the AirBnB website. It was downloaded from http://insideAirBnB.com/get-the-data.html (calendar.csv). This dataset is between 23rd October 2021 to 21st October 2022. This dataset states whether the AirBnB listing is available on a specific date.
To examine how this dataset was created please see Rmd file called ‘calendar_df.Rmd’
# reading the csv
summarise_df = read.csv('summarise_df.csv')
In ‘summarise_df’ dataset, there are 154625 rows and 7 columns in the dataset. Columns names are X, listing_id, month, count, min_price, mean_price, max_price.
#check the class of summarise_df
class(summarise_df)
## [1] "data.frame"
#check the column names for summarise_df
colnames(summarise_df)
## [1] "X" "listing_id" "month" "count" "min_price"
## [6] "mean_price" "max_price"
# examining the structure in summarise_df
str(summarise_df)
## 'data.frame': 154625 obs. of 7 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ listing_id: int 11532 11532 11532 11532 11532 11532 11532 11532 11532 11532 ...
## $ month : chr "January" "February" "March" "April" ...
## $ count : int 29 28 31 30 31 30 25 31 30 26 ...
## $ min_price : int 395 395 395 395 395 395 395 395 395 395 ...
## $ mean_price: num 402 402 401 403 401 ...
## $ max_price : int 420 420 420 420 420 420 420 420 420 420 ...
# examining the top 5 rows in summarise_df
head(summarise_df)
# examining summary of all numeric columns in summarise_df
summary(summarise_df)
## X listing_id month count
## Min. : 1 Min. : 11532 Length:154625 Min. : 1.00
## 1st Qu.: 38657 1st Qu.:17475076 Class :character 1st Qu.:24.00
## Median : 77313 Median :29754308 Mode :character Median :30.00
## Mean : 77313 Mean :29784223 Mean :26.02
## 3rd Qu.:115969 3rd Qu.:44272466 3rd Qu.:31.00
## Max. :154625 Max. :52914686 Max. :31.00
##
## min_price mean_price max_price
## Min. : 9.0 Min. : 9.0 Min. : 9.0
## 1st Qu.: 70.0 1st Qu.: 70.0 1st Qu.: 70.0
## Median :100.0 Median :100.0 Median :104.0
## Mean :127.7 Mean :131.5 Mean :139.2
## 3rd Qu.:150.0 3rd Qu.:150.0 3rd Qu.:160.0
## Max. :999.0 Max. :999.0 Max. :999.0
## NA's :2048 NA's :2048 NA's :2048
| Field | Type | Description |
|---|---|---|
| listing_id | integer | AirBnB’s unique identifier for the listing |
| month | date | Month of the year |
| count | integer | Number of nights available in that month |
| min_price | integer | Minimum price for that listing in that month |
| mean_price | integer | Mean price for that listing in that month |
| max_price | integer | Maximum price for that listing in that month |
Dateset ‘available_nights’ was created from ‘calendar.csv’, which was downloaded from the AirBnB website. It was downloaded from http://insideAirBnB.com/get-the-data.html (calendar.csv). This dataset is between 23rd October 2021 to 21st October 2022. This dataset states whether the AirBnB listing is available on a specific date.
To examine how this dataset was created please see Rmd file called ‘calendar_df.Rmd’
# reading the csv
available_nights_df = read.csv('available_nights_df.csv')
In ‘available_nights_df’ dataset, there are 18673 rows and 3 columns in the dataset. Columns names are X, listing_id, available_nights.
#check the class of available_nights_df
class(available_nights_df)
## [1] "data.frame"
#check the column names for available_nights_df
colnames(available_nights_df)
## [1] "X" "listing_id" "available_nights"
# examining the structure in available_nights_df
str(available_nights_df)
## 'data.frame': 18673 obs. of 3 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ listing_id : int 11532 24927 27106 36950 40176 41538 42037 43280 44077 44919 ...
## $ available_nights: int 341 204 285 354 276 291 28 212 186 361 ...
# examining the top 5 rows in available_nights_df
head(available_nights_df)
# examining summary of all numeric columns in available_nights_df
summary(available_nights_df)
## X listing_id available_nights
## Min. : 1 Min. : 11532 Min. : 1.0
## 1st Qu.: 4669 1st Qu.:18101865 1st Qu.:104.0
## Median : 9337 Median :29872251 Median :236.0
## Mean : 9337 Mean :29960047 Mean :215.5
## 3rd Qu.:14005 3rd Qu.:44121311 3rd Qu.:335.0
## Max. :18673 Max. :52914686 Max. :365.0
| Field | Type | Description |
|---|---|---|
| listing_id | integer | AirBnB’s unique identifier for the listing |
| available_nights | integer | Number of nights avaible during the year |
RTZs (RPZs) were developed by the Irish government to tackle rising rents lack of affordable rental units. These are areas located in parts of the country where rents are the highest and rising, and where households have the greatest difficulty finding affordable accommodation (Residential Tenancies Board, 2021). The csv was manually created from RTB website.
# reading the csv
rpz_df = read.csv('rent_pressure_zones.csv')
In ‘rpz_df’ dataset, there are 57 rows and 2 columns. Columns names are neighbourhood, RPZ.
#check the class of rpz_df
class(rpz_df)
## [1] "data.frame"
#check the column names for rpz_df
colnames(rpz_df)
## [1] "neighbourhood" "RPZ"
# examining the structure in rpz_df
str(rpz_df)
## 'data.frame': 57 obs. of 2 variables:
## $ neighbourhood: chr "Cork City Council" "Dublin City Council" "Dún Laoghaire-Rathdown County Council" "Fingal County Council" ...
## $ RPZ : chr " TRUE" " TRUE" " TRUE" " TRUE" ...
# examining the top 5 rows in rpz_df
head(rpz_df)
# examining summary of all numeric columns in rpz_df
summary(rpz_df)
## neighbourhood RPZ
## Length:57 Length:57
## Class :character Class :character
## Mode :character Mode :character
| Field | Type | Description |
|---|---|---|
| neighbourhood | text | LEA or County Council e.g. Kildare County Council and Naas LEA |
| rpz | logical | Stating whether the area is in RTZs (RPZ): true or false |
The website daft.ie is the leading property website in Ireland, which publishes reports on the Irish housing market every quarter. For this next dataset, the report Q2 2021 was used to find out the rent in each city and county in Ireland (Lyons, 2021). The csv was manually created from the report.
# reading the csv
rent_df = read.csv('rent_in_ireland.csv')
In ‘rent_df’ dataset, here are 28 rows and 2 columns. Columns names are county_city, rent_price_per_month.
#check the class of rent_df
class(rent_df)
## [1] "data.frame"
#check the column names for rent_df
colnames(rent_df)
## [1] "county_city" "rent_price_per_month"
# examining the structure in rent_df
str(rent_df)
## 'data.frame': 28 obs. of 2 variables:
## $ county_city : chr "Dublin City" "Cork City" "Galway City" "County Wicklow" ...
## $ rent_price_per_month: int 2000 1524 1443 1554 1482 1448 1337 1171 1117 1107 ...
# examining the top 5 rows in rent_df
head(rent_df)
# examining summary of all numeric columns in rent_df
summary(rent_df)
## county_city rent_price_per_month
## Length:28 Min. : 744.0
## Class :character 1st Qu.: 945.2
## Mode :character Median :1066.5
## Mean :1430.8
## 3rd Qu.:1363.5
## Max. :9667.0
| Field | Type | Description |
|---|---|---|
| county_city | text | County or City, e.g. County Galway and Galway City |
| rent_price_per_month | integer | Average price of a rental property in an area |
Homeless Report, which is published every month by the Irish government, captures statistics about homelessness (Department of Housing, Local Government and Heritage, 2021). The csv was manually created from this report.
# reading the csv
homelessness_df = read.csv('homeless_September_2021.csv')
In ‘homelessness_df’ dataset, there are 22 rows and 2 columns. Columns names are ï..homeless_county, number.
#check the class of homelessness_df
class(homelessness_df)
## [1] "data.frame"
#check the column names for homelessness_df
colnames(homelessness_df)
## [1] "ï..homeless_county" "number"
# examining the structure in homelessness_df
str(homelessness_df)
## 'data.frame': 22 obs. of 2 variables:
## $ ï..homeless_county: chr "Dublin" "Kildare" "Meath" "Wicklow" ...
## $ number : int 4432 122 170 32 24 12 20 33 51 231 ...
# examining the top 5 rows in homelessness_df
head(homelessness_df)
# examining summary of all numeric columns in homelessness_df
summary(homelessness_df)
## ï..homeless_county number
## Length:22 Min. : 12.0
## Class :character 1st Qu.: 33.0
## Mode :character Median : 44.0
## Mean : 287.1
## 3rd Qu.: 115.0
## Max. :4432.0
| Field | Type | Description |
|---|---|---|
| county | text | County Council e.g. Kildare meaning Co.Kildare. Some counties are grouped together. |
| number | integer | Number of homeless individuals in that county |
Column ‘month’ had to be declared a category and ordering of months had to occur.
# changing 'month' to factor
summarise_df$mmonth <- as.factor(summarise_df$month)
# changing the order of factors
summarise_df$month <- factor(summarise_df$month, levels = c("January", "February", "March","April", "May", "June","July", "August", "September","October", "November", "December"))
## 'data.frame': 25977 obs. of 18 variables:
## $ id : int 39788249 11604537 49687964 36327396 42562547 9913012 49958946 8522094 11439644 5740595 ...
## $ name : chr "Comfortable family home" "Large 3 Bedroom Period House" "Double room easy access to Dublin City centre" "2 bedrooms terraced house/ Petite maison de ville" ...
## $ host_id : int 305457271 61410545 400749134 107522669 100253602 50433198 402865939 1130726 28736039 790601 ...
## $ host_name : chr "John" "Anne" "Ciara" "Manue" ...
## $ neighbourhood_group : chr "Dublin City Council" "Dublin City Council" "Dublin City Council" "Dublin City Council" ...
## $ neighbourhood : chr "Ballyfermot-Drimnagh LEA-5" "Ballyfermot-Drimnagh LEA-5" "Ballyfermot-Drimnagh LEA-5" "Ballyfermot-Drimnagh LEA-5" ...
## $ latitude : num 53.3 53.3 53.3 53.3 53.3 ...
## $ longitude : num -6.36 -6.32 -6.32 -6.34 -6.32 ...
## $ room_type : chr "Private room" "Entire home/apt" "Private room" "Entire home/apt" ...
## $ price : int 24 100 25 70 40 80 18 55 80 229 ...
## $ minimum_nights : int 4 3 1 2 1 14 6 3 4 3 ...
## $ number_of_reviews : int 1 58 0 0 2 18 0 98 10 12 ...
## $ last_review : chr "2019-12-07" "2021-07-28" "" "" ...
## $ reviews_per_month : num 0.04 0.85 NA NA 0.1 0.36 NA 1.34 0.15 0.38 ...
## $ calculated_host_listings_count: int 1 1 1 1 1 1 1 1 1 5 ...
## $ availability_365 : int 0 0 0 0 0 0 0 0 0 273 ...
## $ number_of_reviews_ltm : int 0 6 0 0 0 0 0 0 0 4 ...
## $ license : logi NA NA NA NA NA NA ...
License has no unique values, therefore, it was dropped from the dataset.
# examining unique values in column 'license'
unique(df$license)
## [1] NA
#examining the columns names of df to make sure 'license' is dropped
colnames(df)
## [1] "id" "name"
## [3] "host_id" "host_name"
## [5] "neighbourhood_group" "neighbourhood"
## [7] "latitude" "longitude"
## [9] "room_type" "price"
## [11] "minimum_nights" "number_of_reviews"
## [13] "last_review" "reviews_per_month"
## [15] "calculated_host_listings_count" "availability_365"
## [17] "number_of_reviews_ltm"
The minimum number of listings the host has in the current scrape, in the city/region geography 1 nights and is 216. On average, there are 6.7077415 listings per host. There are no issues with this column because the minimum of listings has to 1 (otherwise, the host has no listings on AirBnB).
summary(df$calculated_host_listings_count)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.000 1.000 6.708 3.000 216.000
The minimum number of reviews in the last 12 months was for an AirBnB listing is 0 nights and the maximum of number of reviews is 366. On average, in the last 12 months, there were 6.1630673 reviews per listing.
summary(df$number_of_reviews_ltm)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 0.000 1.000 6.163 8.000 366.000
The minimum price for an AirBnB listing is 0 and the maximum is 1322. On average, there are 37.8804712 reviews per listing.
summary(df$number_of_reviews)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 3.00 13.00 37.88 44.00 1322.00
The minimum availability for an AirBnB listing is 0 and the maximum is 365. On average, the listings are available 154.1243023 nights out of the year.
summary(df$availability_365)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0 0.0 137.0 154.1 301.0 365.0
After much consideration, it was decided to remove ‘availability_365’. On AirBnB data dictionary, it states that ‘[the] availability of the listing x days in the future as determined by the calendar. Note a listing may be available because it has been booked by a guest or blocked by the host.’ It is very unclear what it is meant by 0 nights available.
Instead, it was decided to examine next year’s availability from available_nights_df (from 23rd October 2021 to 21st October 2022) to a more accurate reading of availability. Before changing availability column, there were 25977 rows in the dataset.
Dataset ‘df’ was merged with ‘available_nights_df’ using ‘listing_id’ in ‘available_nights_df’ and ‘id’ in ‘df’.
After merging ‘df’ dataset on the columns ‘id’ from ‘df’ dataset and ‘listing_df’ from ‘available_nights_df’ dataset, there were 18673 rows in the dataset. 7304 rows were dropped from the dataset. This would imply that the listings that are no longer available were dropped from the dataset. This was seen as important and accurate for answering the research questions because this would examine the amount of housing that will not be available to Irish tenants for long-term lease between 23rd October 2021 and 21st October 2022. It is unclear what happened to the 7304 listings on the AirBnB or why they were unavailable on the stated year. This ensures that we analyse data relevant to the upcoming year, rather than examine all the previous listings of AirBnB in Ireland.
The minimum stay for an AirBnB listing is 1 nights and the maximum of minimum nights is 1000 nights. On average, the minimum stay must be 214.4104857 nights. There were 6 rows that had minimum stay over 365 nights It was assumed to be an error and were dropped from the dataset.
summary(df$minimum_nights)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.000 2.000 4.846 3.000 1000.000
The minimum price for an AirBnB listing is 9 and the maximum is 1173721. As stated above, column ‘price’ is price per day of stay. Of course, price can not be €0 and this was examined to ensure none of the rows contained ‘0’ in price. Maximum price seems to be is 1173721 per night, which seems to be inaccurate. This row was dropped from the dataset.
summary(df$price)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 9.0 66.5 100.0 254.2 150.0 1173721.0
After dropping the outliers, there are 18666 row in ‘df’ dataset.
summary(df$price)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 9.00 66.25 100.00 191.32 150.00 21077.00
There are 4 room types: Entire rental unit, Private room, Hotel room, Shared room. However, hotels have planning permission with relevant authorities to host guests and lease rooms, therefore, hotels will be dropped from the data.
# examining room type available in Room Type
unique(df$room_type)
## [1] Entire rental unit Private room Shared room
## Levels: Entire rental unit Private room Shared room
After dropping the ‘Hotel room’ from the data, there are 18474 row in ‘df’ dataset.
Neighboourhood has some unclean data and ‘LEA’ was dropped from the values in the column.
unique(df$lea)
## [1] "Conamara North LEA"
## [2] "Sligo-Drumcliff LEA"
## [3] "Cork City North East LEA"
## [4] "Thurles LEA"
## [5] "Kilrush LEA"
## [6] "Killaloe LEA"
## [7] "Athenry-Oranmore LEA"
## [8] "Conamara South LEA"
## [9] "Carlow LEA"
## [10] "Castleknock LEA"
## [11] "Ennistimon LEA"
## [12] "Newport LEA"
## [13] "Skibbereen-West Cork LEA"
## [14] "Glenties LEA"
## [15] "Belmullet LEA"
## [16] "Kenmare LEA"
## [17] "Milford LEA"
## [18] "New Ross LEA"
## [19] "Granard LEA"
## [20] "Shannon LEA"
## [21] "Donegal LEA"
## [22] "Claremorris LEA"
## [23] "Carrick-on-Shannon LEA"
## [24] "Westport LEA"
## [25] "Ratoath LEA"
## [26] "Bantry-West Cork LEA"
## [27] "Ballinamore LEA"
## [28] "Greystones LEA"
## [29] "Dungarvan LEA"
## [30] "Ballymote-Tobercurry LEA"
## [31] "Callan-Thomastown LEA"
## [32] "Corca Dhuibhne LEA"
## [33] "Kimmage-Rathmines LEA"
## [34] "Killarney LEA"
## [35] "Midleton LEA"
## [36] "Wexford LEA"
## [37] "Clonmel LEA"
## [38] "Nenagh LEA"
## [39] "Loughrea LEA"
## [40] "North Inner City LEA"
## [41] "Portlaoise LEA"
## [42] "South East Inner City LEA"
## [43] "Listowel LEA"
## [44] "Portlaw-Kilmacthomas LEA"
## [45] "Cabra-Glasnevin LEA"
## [46] "Dundrum LEA"
## [47] "Ballinasloe LEA"
## [48] "Galway City Central LEA"
## [49] "Boyle LEA"
## [50] "Cork City North West LEA"
## [51] "Ballybay-Clones LEA"
## [52] "Maynooth LEA"
## [53] "Carrickmacross-Castleblayney LEA"
## [54] "Adare-Rathkeale LEA"
## [55] "Arklow LEA"
## [56] "Lismore LEA"
## [57] "Borris-in-Ossory -Mountmellick LEA"
## [58] "Castlecomer LEA"
## [59] "Stillorgan LEA"
## [60] "Cavan-Belturbet LEA"
## [61] "Navan LEA"
## [62] "Ashbourne LEA"
## [63] "Pembroke LEA"
## [64] "Buncrana LEA"
## [65] "Carndonagh LEA"
## [66] "Ardee LEA"
## [67] "Clontarf LEA"
## [68] "Wicklow LEA"
## [69] "Baltinglass LEA"
## [70] "Ballymun-Finglas LEA"
## [71] "Leixlip LEA"
## [72] "Ennis LEA"
## [73] "Ballina LEA"
## [74] "Newcastle West LEA"
## [75] "Castleisland LEA"
## [76] "Carrigaline LEA"
## [77] "Mallow LEA"
## [78] "Glencullen-Sandyford LEA"
## [79] "Athy LEA"
## [80] "Dún Laoghaire-Rathdown County Council"
## [81] "Gort-Kinvara LEA"
## [82] "Cobh LEA"
## [83] "Tralee LEA"
## [84] "Cappamore-Kilmallock LEA"
## [85] "Celbridge LEA"
## [86] "Bandon-Kinsale LEA"
## [87] "Tuam LEA"
## [88] "Waterford City East LEA"
## [89] "South West Inner City LEA"
## [90] "Birr LEA"
## [91] "Galway City East LEA"
## [92] "Kells LEA"
## [93] "Newbridge LEA"
## [94] "Laytown-Bettystown LEA"
## [95] "Muinebeag LEA"
## [96] "Athlone LEA"
## [97] "Limerick City East LEA"
## [98] "Donaghmede LEA"
## [99] "Blackrock LEA"
## [100] "Tullow LEA"
## [101] "Tallaght Central LEA"
## [102] "Moate LEA"
## [103] "Howth-Malahide LEA"
## [104] "Mullingar LEA"
## [105] "Swords LEA"
## [106] "Cashel-Tipperary LEA"
## [107] "Cork City South Central LEA"
## [108] "Naas LEA"
## [109] "Edenderry LEA"
## [110] "Kinnegad LEA"
## [111] "Sligo-Strandhill LEA"
## [112] "Tramore-Waterford City West LEA"
## [113] "Rathfarnham-Templeogue LEA"
## [114] "Ballyfermot-Drimnagh LEA"
## [115] "Rosslare LEA"
## [116] "Dundalk South LEA"
## [117] "Lifford-Stranorlar LEA"
## [118] "Castlebar LEA"
## [119] "Ballyjamesduff LEA"
## [120] "Dundalk-Carlingford LEA"
## [121] "Firhouse-Bohernabreena LEA"
## [122] "Kanturk LEA"
## [123] "Monaghan LEA"
## [124] "Rush-Lusk LEA"
## [125] "Clane LEA"
## [126] "Enniscorthy LEA"
## [127] "Bray East LEA"
## [128] "Tullamore LEA"
## [129] "Killiney-Shankill LEA"
## [130] "Galway City West LEA"
## [131] "Cahir LEA"
## [132] "Graiguecullen -Portarlington LEA"
## [133] "Gorey LEA"
## [134] "Roscrea-Templemore LEA"
## [135] "Ballymahon LEA"
## [136] "Fermoy LEA"
## [137] "Macroom LEA"
## [138] "Kilmuckridge LEA"
## [139] "Kilkenny LEA"
## [140] "Ongar LEA"
## [141] "Manorhamilton LEA"
## [142] "Longford LEA"
## [143] "Cork City South East LEA"
## [144] "Letterkenny LEA"
## [145] "Artane-Whitehall LEA"
## [146] "Clondalkin LEA"
## [147] "Blanchardstown-Mulhuddart LEA"
## [148] "Limerick City North LEA"
## [149] "Cork City South West LEA"
## [150] "Swinford LEA"
## [151] "Piltown LEA"
## [152] "Trim LEA"
## [153] "Carrick-on-suir LEA"
## [154] "Bray West LEA"
## [155] "Lucan LEA"
## [156] "Balbriggan LEA"
## [157] "Palmerstown-Fonthill LEA"
## [158] "Bailieborough-Cootehill LEA"
## [159] "Drogheda Urban LEA"
## [160] "Roscommon LEA"
## [161] "Kildare LEA"
## [162] "Waterford City South LEA"
## [163] "Drogheda Rural LEA"
## [164] "Tallaght South LEA"
## [165] "Limerick City West LEA"
# examining unique values in column 'council'
unique(df$council)
## [1] "Galway County Council"
## [2] "Sligo County Council"
## [3] "Cork City Council"
## [4] "Tipperary County Council"
## [5] "Clare County Council"
## [6] "Carlow County Council"
## [7] "Fingal County Council"
## [8] "Cork County Council"
## [9] "Donegal County Council"
## [10] "Mayo County Council"
## [11] "Kerry County Council"
## [12] "Wexford County Council"
## [13] "Longford County Council"
## [14] "Leitrim County Council"
## [15] "Meath County Council"
## [16] "Wicklow County Council"
## [17] "Waterford City And County Council"
## [18] "Kilkenny County Council"
## [19] "Dublin City Council"
## [20] "Laois County Council"
## [21] "Dún Laoghaire-Rathdown County Council"
## [22] "Galway City Council"
## [23] "Roscommon County Council"
## [24] "Monaghan County Council"
## [25] "Kildare County Council"
## [26] "Limerick City And County Council"
## [27] "Cavan County Council"
## [28] "Louth County Council"
## [29] "Offaly County Council"
## [30] "South Dublin County Council"
## [31] "Westmeath County Council"
A new variable ‘county’ was created from ‘neighbourhood_group’. Several counties may have two or more county or city councils such as Cork, which has two councils: Cork City Council and Cork County Council. County Galway has two councils too: Galway City Council and Galway County Council. Dublin has several councils: Fingal County Council, South Dublin County Council, Dún Laoghaire-Rathdown County Council, Dublin County Council. Some councils have two in one like Limerick City And County Council. To find out the county, string manipulation was conducted.
unique(df$county)
## [1] Galway Sligo Cork Tipperary Clare Carlow Dublin
## [8] Donegal Mayo Kerry Wexford Longford Leitrim Meath
## [15] Wicklow Waterford Kilkenny Laois Roscommon Monaghan Kildare
## [22] Limerick Cavan Louth Offaly Westmeath
## 26 Levels: Carlow Cavan Clare Cork Donegal Dublin Galway Kerry ... Wicklow
Creating a new varible ‘student_accomodation’, examining whether the ‘name’ column contains ‘student’ in the description.
Short-term lets are stays of less than 14 days at a time, for example, if you rent out your property on a booking website such as AirBnB so people can stay there for a weekend (Citizensinformation.ie, no date).
A new variable ‘term’ was created to state whether the listing is ‘short-term lease’ or ‘long-term lease’.
Homeowners in RTZs (RPZs) are required to apply for planning permission if they let out their entire home (principal private residence) for short-term lets of more than 90 days in total while they are away. Principal private residence is the place where one ordinarily live (Citizensinformation.ie, no date).
A new variable ‘threshold_day_90’ was created to state whether the listing is ‘under-90’ or ‘over-90’ days.
Creating a new variable ‘total_income’, examining the full income potential of a listings by multiplying the price by the number of nights it is available for.
summary(df$total_income)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0 8894 19970 50432 35600 7693105
There are 18474 rows in the ‘df’ dataset before dropping outliers. As seen above in the histogram, there are very limited amount of properties that are above €200,000 in total income per year. It was decided to drop all rows that are over €200,000 in total income because in this project, the affordable listings are examined in relation to the Irish Housing Crisis. Only the ‘affordable’ houses will be examined. It was unclear where to make the cut-off. It was decided to make €200,000 the cut-off even though paying potential rent of €200,000 is not affordable when a tenant is competing the AirBnB prices.
After dropping all rows with total potential income from AirBnB over €200,000, there were 18267 rows in the dataset. 7710 rows were dropped from the dataset.
In ‘df’ dataset, a new column ‘county_city’ was created from ‘council’ to be the same as ‘county_city’ in ‘rent_df’.
unique(rent_df$county_city)
## [1] "Dublin City" "Cork City" "Galway City" "County Wicklow"
## [5] "County Kildare" "County Meath" "County Louth" "County Cork"
## [9] "County Westmeath" "County Waterford" "County Kilkenny" "County Laois"
## [13] "County Carlow" "County Galway" "County Offaly" "County Limerick"
## [17] "County Kerry" "County Clare" "County Wexford" "County Tipperary"
## [21] "County Monaghan" "County Sligo" "County Cavan" "County Mayo"
## [25] "County Roscommon" "County Longford" "County Donegal" "County Leitrim"
Datasets ‘df’ and ‘rent_df’ were merged on column ‘county_city’.
In ‘df’ dataset, a new variable ‘homeless_county’ was created from ‘county’ to hold the same values as ‘homeless_county’ in ‘homeless_df’ dataset. Several counties have been merged together in the report such as ‘Mayo/Roscommon’.
Datasets ‘df’ and ‘homeless_df’ were merged on column ‘homeless_county’.
Using rent_df (dataset with county or city and average rent), A new variable was calculated ‘rent_price_per_day’ which is the rent the tenant pays per day to stay in their rented property. Although this is not how this is not normally used in the renting market, this variable will be compared to the price of AirBnB, which is in ‘per day’. It was decided to find the rent per day, because not all properties are leased for 365 days a year.
It was also assumed that private rooms will cost one third of an entire house to rent, i.e. if a house’s rent is €1500, then a room to rent is €500. Although this is not the most accurate estimate, it is better than assuming that the price of a private room is the same as a rent of the whole house, i.e. €1500 for private room. This was also operated under the assumptions that all rooms in the house are the same size and have the same bathroom privileges, i.e. all en suite or all sharing.
New variable was created to examine whether the property should be rented or AirBnB listing.
Some thought was given to whether to compare AirBnB daily price and rent per day OR total income possible from AirBnB and total income from rent. Although comparing daily AirBnB and rent per day would allow to compare the income the landlord would get on per day, it does not show whether it is actually worth while listing the property on AirBnB is more profitable than renting when taking in consideration the amount of nights that the property is available. Two varialbes were developed to examine this: per day and per year.
If the AirBnB price is greater than price, then the property should be an AirBnB listing. If the AirBnB price is lower than price, then the property should be rented.
The column ‘county_city’ in ‘rpz_df’ had values which contained both values from columns ‘council’ and ‘lea’. In this case, a new column had to be created stating whether the listing is a RTZ or not.
## [1] "Cork City Council"
## [2] "Dublin City Council"
## [3] "Dún Laoghaire-Rathdown County Council"
## [4] "Fingal County Council"
## [5] "South Dublin County Council"
## [6] "Kildare County Council"
## [7] "Ballincolligâ\200“Carrigaline LEA"
## [8] "Galway City Central LEA"
## [9] "Galway City East LEA"
## [10] "Galway City West LEA"
## [11] "Celbridge-Leixlip LEA"
## [12] "Naas LEA"
## [13] "Newbridge LEA"
## [14] "Ashbourne LEA"
## [15] "Laytown-Bettystown LEA"
## [16] "Ratoath LEA"
## [17] "Bray LEA"
## [18] "Wicklow LEA"
## [19] "Cobh LEA"
## [20] "Maynooth LEA"
## [21] "Drogheda Rural LEA"
## [22] "Drogheda Urban LEA"
## [23] "Drogheda LEA"
## [24] "Greystones LEA"
## [25] "Limerick City East LEA"
## [26] "Navan LEA"
## [27] "Fermoy LEA"
## [28] "Midleton LEA"
## [29] "Athenry-Oranmore LEA"
## [30] "Gort-Kinvara LEA"
## [31] "Kilkenny LEA"
## [32] "Graiguecullen-Portarlington LEA"
## [33] "Portlaoise LEA"
## [34] "Limerick City North LEA"
## [35] "Limerick City West LEA"
## [36] "Ardee LEA"
## [37] "Dundalk-Carlingford LEA"
## [38] "Dundalk South LEA"
## [39] "Kells LEA"
## [40] "Trim LEA"
## [41] "Waterford City East LEA"
## [42] "Waterford City South LEA"
## [43] "Athlone LEA"
## [44] "Gorey LEA"
## [45] "Arklow LEA"
## [46] "Carlow LEA"
## [47] "Macroom LEA"
## [48] "Piltown LEA"
## [49] "Sligo-Strandhill LEA"
## [50] "Baltinglass LEA"
## [51] "Mallow LEA"
## [52] "Killarney LEA"
## [53] "Athy LEA"
## [54] "Tullamore LEA"
## [55] "Mullingar LEA"
## [56] "Bandon-Kinsale LEA"
Creating a new variable ‘planning_permission’ in ‘df’ dataset to examine whether planning permission is required for the AirBnB listing. As stated above, an AirBnB listings of an entire property over 90 days in RTZ requires planning permission with the local authorites. New column will state whether planning permission is required or not.
Dataset ‘df’ was merged with ‘summarise_df’ using ‘listing_id’ in ‘available_nights_df’ and ‘id’ in ‘df’.
names(large_df)
## [1] "id" "homeless_county"
## [3] "county_city" "name"
## [5] "host_id" "host_name"
## [7] "council" "lea"
## [9] "latitude" "longitude"
## [11] "room_type" "price"
## [13] "minimum_nights" "number_of_reviews"
## [15] "last_review" "reviews_per_month"
## [17] "calculated_host_listings_count" "availability_365"
## [19] "number_of_reviews_ltm" "X.x"
## [21] "available_nights" "county"
## [23] "student_accomodation" "term"
## [25] "threshold_day_90" "total_income"
## [27] "rent_price_per_month" "number"
## [29] "rent_price_per_day" "rent_price_per_year"
## [31] "per_day_rent_AirBnB" "per_year_rent_AirBnB"
## [33] "rent_pressure_zone" "planning_permission"
## [35] "X.y" "month"
## [37] "count" "min_price"
## [39] "mean_price" "max_price"
## [41] "mmonth"
names(large_df)
## [1] "id" "host_id" "room_type"
## [4] "county" "student_accomodation" "term"
## [7] "threshold_day_90" "per_day_rent_AirBnB" "per_year_rent_AirBnB"
## [10] "rent_pressure_zone" "planning_permission" "month"
## [13] "count" "min_price" "mean_price"
## [16] "max_price"
In the final ‘large_df’ dataset, there are 148209 rows and 16 columns. Columns names are id, host_id, room_type, county, student_accomodation, term, threshold_day_90, per_day_rent_AirBnB, per_year_rent_AirBnB, rent_pressure_zone, planning_permission, month, count, min_price, mean_price, max_price.
## 'data.frame': 148209 obs. of 16 variables:
## $ id : Factor w/ 25977 levels "11532","24927",..: 3197 3197 3197 3197 3197 3197 3197 3197 3197 3197 ...
## $ host_id : Factor w/ 17253 levels "42467","42928",..: 4276 4276 4276 4276 4276 4276 4276 4276 4276 4276 ...
## $ room_type : Factor w/ 3 levels "Entire rental unit",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ county : Factor w/ 26 levels "Carlow","Cavan",..: 7 7 7 7 7 7 7 7 7 7 ...
## $ student_accomodation: logi FALSE FALSE FALSE FALSE FALSE FALSE ...
## $ term : Factor w/ 2 levels "long-term lease",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ threshold_day_90 : Factor w/ 2 levels "over-90","under-90": 1 1 1 1 1 1 1 1 1 1 ...
## $ per_day_rent_AirBnB : Factor w/ 2 levels "AirBnB","Rent": 1 1 1 1 1 1 1 1 1 1 ...
## $ per_year_rent_AirBnB: Factor w/ 2 levels "AirBnB","Rent": 2 2 2 2 2 2 2 2 2 2 ...
## $ rent_pressure_zone : Factor w/ 2 levels "Non-RPZ","RPZ": 1 1 1 1 1 1 1 1 1 1 ...
## $ planning_permission : chr "Not Required" "Not Required" "Not Required" "Not Required" ...
## $ month : Factor w/ 12 levels "January","February",..: 2 8 10 1 9 5 4 3 11 12 ...
## $ count : int 9 1 13 31 13 1 11 29 19 21 ...
## $ min_price : int 400 400 400 400 400 400 400 400 400 400 ...
## $ mean_price : num 400 400 400 400 400 ...
## $ max_price : int 400 400 400 400 400 400 400 400 400 414 ...
## id host_id room_type county
## 11532 : 12 226804666: 2586 Entire rental unit:98093 Kerry :21640
## 36950 : 12 218736839: 1092 Private room :49106 Donegal:17713
## 44919 : 12 98759090 : 984 Shared room : 1010 Dublin :15921
## 57442 : 12 105690532: 876 Galway :15900
## 88626 : 12 148347815: 768 Cork :15751
## 100617 : 12 54449369 : 694 Mayo : 9983
## (Other):148137 (Other) :141209 (Other):51301
## student_accomodation term threshold_day_90
## Mode :logical long-term lease : 2947 over-90 :136051
## FALSE:145481 short-term lease:145262 under-90: 12158
## TRUE :2728
##
##
##
##
## per_day_rent_AirBnB per_year_rent_AirBnB rent_pressure_zone
## AirBnB:144185 AirBnB: 19320 Non-RPZ:98308
## Rent : 4024 Rent :128889 RPZ :49901
##
##
##
##
##
## planning_permission month count min_price
## Length:148209 October :14550 Min. : 1.00 Min. : 9.0
## Class :character January :14397 1st Qu.:24.00 1st Qu.: 70.0
## Mode :character April :13545 Median :30.00 Median :100.0
## December:13251 Mean :26.02 Mean :124.7
## March :13150 3rd Qu.:31.00 3rd Qu.:150.0
## November:13128 Max. :31.00 Max. :999.0
## (Other) :66188 NA's :456
## mean_price max_price
## Min. : 9.0 Min. : 9.0
## 1st Qu.: 70.0 1st Qu.: 70.0
## Median :100.0 Median :103.0
## Mean :128.2 Mean :135.6
## 3rd Qu.:150.0 3rd Qu.:160.0
## Max. :999.0 Max. :999.0
## NA's :456 NA's :456
| Field | Type | Description |
|---|---|---|
| id | integer | AirBnB’s unique identifier for the listing |
| host_id | integer | Host’s unique identifier |
| month | date | Month of the year |
| min_price | integer | Minimum price for that listing in that month |
| mean_price | integer | Mean price for that listing in that month |
| max_price | integer | Maximum price for that listing in that month |
| count | integer | Number of nights available in that month |
| county | text | County of AirBnB Listing |
| student_accomodation | logical | Whether TRUE or FALSE |
| room_type | logical | Room type: Entire rental unit, Private room, Shared room |
| threshold_day_90 | text | Whether over-90 or under-90 days |
| term | text | Whether the AirBnB listing is available for long-term lease or short-term lease |
| per_day_rent_AirBnB | text | Whether the property should be AirBnBed or rented our based on daily price |
| per_year_rent_AirBnB | text | Whether the property should be AirBnBed or rented our based on potential income |
In the final ‘df’ dataset, there are 17935 rows and 34 columns. Columns names are homeless_county, county_city, id, name, host_id, host_name, council, lea, latitude, longitude, room_type, price, minimum_nights, number_of_reviews, last_review, reviews_per_month, calculated_host_listings_count, availability_365, number_of_reviews_ltm, X, available_nights, county, student_accomodation, term, threshold_day_90, total_income, rent_price_per_month, number, rent_price_per_day, rent_price_per_year, per_day_rent_AirBnB, per_year_rent_AirBnB, rent_pressure_zone, planning_permission.
Because our dataset was has been merged with ‘available_nights_df’, as described above, our dataset has AirBnB listings only available from 23rd October 2021 to 21st October 2022. Any past AirBnB are not included in our dataset.
## homeless_county county_city
## Kerry :2531 County Kerry :2531
## Dublin :2307 Dublin City :2307
## Donegal/Leitrim :2248 County Donegal:1987
## Galway (Galway City and County councils):1945 County Cork :1601
## Cork (Cork City and County councils) :1880 County Galway :1339
## Mayo/Roscommon :1381 County Clare :1227
## (Other) :5643 (Other) :6943
## id name host_id host_name
## 11532 : 1 Length:17935 226804666: 216 Length:17935
## 24927 : 1 Class :character 98759090 : 102 Class :character
## 27106 : 1 Mode :character 218736839: 91 Mode :character
## 36950 : 1 105690532: 73
## 40176 : 1 54449369 : 64
## 42037 : 1 148347815: 64
## (Other):17929 (Other) :17325
## council lea latitude longitude
## Length:17935 Length:17935 Min. :51.43 Min. :-10.463
## Class :character Class :character 1st Qu.:52.23 1st Qu.: -9.438
## Mode :character Mode :character Median :53.27 Median : -8.474
## Mean :53.13 Mean : -8.276
## 3rd Qu.:53.71 3rd Qu.: -7.068
## Max. :55.38 Max. : -6.014
##
## room_type price minimum_nights
## Entire rental unit:11655 Min. : 9.0 Min. : 1.000
## Private room : 6163 1st Qu.: 66.0 1st Qu.: 1.000
## Shared room : 117 Median : 100.0 Median : 2.000
## Mean : 124.1 Mean : 4.598
## 3rd Qu.: 150.0 3rd Qu.: 3.000
## Max. :2202.0 Max. :365.000
##
## number_of_reviews last_review reviews_per_month
## Min. : 0.00 Length:17935 Min. : 0.010
## 1st Qu.: 4.00 Class :character 1st Qu.: 0.460
## Median : 17.00 Mode :character Median : 1.090
## Mean : 43.12 Mean : 2.023
## 3rd Qu.: 51.00 3rd Qu.: 2.310
## Max. :1322.00 Max. :115.000
## NA's :2017
## calculated_host_listings_count availability_365 number_of_reviews_ltm
## Min. : 1.000 Min. : 0.0 Min. : 0.000
## 1st Qu.: 1.000 1st Qu.:101.0 1st Qu.: 0.000
## Median : 2.000 Median :233.0 Median : 4.000
## Mean : 7.909 Mean :213.9 Mean : 8.293
## 3rd Qu.: 4.000 3rd Qu.:334.0 3rd Qu.: 12.000
## Max. :216.000 Max. :365.0 Max. :276.000
##
## X available_nights county student_accomodation
## Min. : 1 Min. : 1 Kerry :2531 Mode :logical
## 1st Qu.: 4680 1st Qu.:104 Dublin :2307 FALSE:17701
## Median : 9343 Median :234 Donegal:1987 TRUE :234
## Mean : 9364 Mean :215 Galway :1945
## 3rd Qu.:14074 3rd Qu.:334 Cork :1880
## Max. :18673 Max. :365 Clare :1227
## (Other):6058
## term threshold_day_90 total_income
## long-term lease : 378 over-90 :13781 Min. : 0
## short-term lease:17557 under-90: 4154 1st Qu.: 8852
## Median : 19800
## Mean : 26679
## 3rd Qu.: 35000
## Max. :199800
##
## rent_price_per_month number rent_price_per_day rent_price_per_year
## Min. : 744 Min. : 12.0 Min. : 8.153 Min. : 2976
## 1st Qu.: 974 1st Qu.: 43.0 1st Qu.: 15.868 1st Qu.: 5792
## Median :1032 Median : 94.0 Median : 29.030 Median : 10596
## Mean :1343 Mean : 685.4 Mean : 33.136 Mean : 12095
## 3rd Qu.:1443 3rd Qu.: 254.0 3rd Qu.: 34.652 3rd Qu.: 12648
## Max. :9667 Max. :4432.0 Max. :317.819 Max. :116004
##
## per_day_rent_AirBnB per_year_rent_AirBnB rent_pressure_zone
## AirBnB:17439 AirBnB: 4835 Non-RPZ:11407
## Rent : 496 Rent :13100 RPZ : 6528
##
##
##
##
##
## planning_permission
## Length:17935
## Class :character
## Mode :character
##
##
##
##
| Field | Type | Description |
|---|---|---|
| id | integer | AirBnB’s unique identifier for the listing |
| name | text | Title of the property on AirBnB |
| host_id | interger | AirBnB’s unique identifier for the host |
| host_name | text | Host’s name |
| lea | text | Local Electoral Areas (LEAs) |
| council | text | County or City Council |
| county | text | County of the AirBnB Listing |
| latitude | numeric | Uses the World Geodetic System (WGS84) projection for latitude and longitude |
| longitude | numeric | Uses the World Geodetic System (WGS84) projection for latitude and longitude |
| room_type | string | Entire rental unit, Private room, Shared room, Hotel room |
| price | currency | Daily price in local currency |
| minimum_nights | integer | minimum number of night stay for the listing (calendar rules may be different) |
| number_of_reviews | integer | The number of reviews the listing has |
| last_review | date | The date of the last/newest review |
| calculated_host_listings_count | integer | The number of listings the host has in the current scrape, in the city/region geography |
| availability_365 | integer | availability_x. The availability of the listing x days in the future as determined by the calendar. Note a listing may be available because it has been booked by a guest or blocked by the host |
| number_of_reviews_ltm | integer | The number of reviews the listing has (in the last 12 months) |
| student_accomodation | logical | Whether TRUE or FALSE |
| total_income | interger | AirBnB listings potential total income (available nights * price) |
| threshold_day_90 | text | Whether over-90 or under-90 days |
| term | text | Whether the AirBnB listing is available for long-term lease or short-term lease |
| per_day_rent_AirBnB | text | Whether the property should be AirBnBed or rented our based on daily price |
| per_year_rent_AirBnB | text | Whether the property should be AirBnBed or rented our based on potential income |
Comment: It is clear from this graph that there are some parts of Ireland that have more AirBnB listings than others. It is easy to see that there are more properties available on the coast than inland.
Comment: It was surprising to see that Kerry has more AirBnB listings available than Dublin. It is also important to note that the first seven in the table (except for Dublin) are all on the Wild Atlantic Way.
Comment: Even though Kerry has more options for accomondation than Dublin, it is also more expensive.
Comment: There are less AirBnB listings available in the summer, than the winter. However, it is possible that the AirBnB listings are not yet for the summer.
Comment: By clicking on different counties, it is possible to see the difference between counties on types of accommodation available. Dublin has more private rooms available than entire rental units. However, in Galway and Cork, there are more entire rental units available than private rooms.
Comment: It is possible to select the same county in the two graphs above and compare. For example, Dublin has more entire rental units than private rooms, entire rental units are more expensive than private rooms.
## `summarise()` has grouped output by 'month'. You can override using the `.groups` argument.
Comment: It is interesting to compare AirBnB listings for each month and county. Big cities like Dublin, Cork, Galway and Limerick, including Kerry, have less AirBnB listings in teh summer. It is unclear why this is the case, considering more tourists come to Ireland during the summer.
## `summarise()` has grouped output by 'county'. You can override using the `.groups` argument.
Comment: Tablee examined the number in the graph above. Less AirBnB listings are available in the summer than any other time of the year.
The initial examination of the data, shows that there are more AirBnB Listing in Kerry than Dublin. Top 7 county with AirBnB listings are on the Wild Atlantic Way. The map of Ireland shows the density of the number of listings on the coast. For some reason, there are less AirBnB listings in the summer than the winter. Number of room types differs depedning on the county. Dublin City, Cork City and Galway City, The county breakdown examination shows no difference in price or mininum nights required to stay regardless of room type.
Comment: Map of Ireland represents the density of AirBnB listings, highlighting the areas that are in RTZs (in red). Athough Dublin City, Cork City and Galway City are all in RTZs, it is possible to see the huge amount of AirBnB listings available, which can be affecting the Irish Housing Crisis.
Comment: There are more entire rental units and private rooms available outside of RTZs than there are in the RTZs.
Comment: Table above is summarised with this graph. There are more entire rental units and private rooms available outside of RTZs than there are in the RTZs. However, this could be due to fact that there are more houses in general outside the RTZs than inside the RTZs, which would show more AirBnB listings outside RTZs than inside RTZs.
Comment: Although, there is a difference between entire rental unit and private/shared room on price, there is no big difference between renting private/shared room inside or outside the RTZ. However, an entire rental unit is slightly more expensive in RTZs than outside RTZs.
## `summarise()` has grouped output by 'month'. You can override using the `.groups` argument.
Comment: In the table above, number of listings is summarised by RTZ and month.
## `summarise()` has grouped output by 'month'. You can override using the `.groups` argument.
Comment: In the graph above visusalises the table above. As seen above, there are overall less AirBnB listings in RTZs than in Non-RTZs. Furthermore, the trend follows for the month: less AirBnBs are available during the summer than in the winter.
Map of Ireland shows that there are a lot of AirBnB listings in RTZs, which would affect the number of accommodation available for the housing market, to buy or to rent. There are as many entire rental units as private rooms in RTZs. There are more entire rental units outside of RTZs because there are more areas not in RTZs than there are in RTZs. At first glance, due to the amount of AirBnB listings in RTZs, it could be argued to the government that it could potentially reduce the pressure on the Irish housing market and reduce the Housing Crisis in RTZs.
A new dataset was created where AirBnB listings were selected that offered entire rental unit. This new dataset was used for this section of the report.
Comment: Kerry and Donegal have more entire rental units than other counties. Dublin is only 5th highest, while Cork and Galway are in 3rd and 4th place.
Comment: When Kerry was examined, 326 AirBnB listings are in the RTZ, while the rest is outside the RTZ. Both County Galway and County Cork have AirBnB listings in RTZ and outside of it. All Dublin City AirBnBlistings, Cork City AirBnB listings and Galway City AirBnB listings is in the RTZ.
## `summarise()` has grouped output by 'county'. You can override using the `.groups` argument.
Comment:
It is visible that a lot of properties are not available all year around. Unfortunately, no reason is provided why the property is unavailable.
## `summarise()` has grouped output by 'month'. You can override using the `.groups` argument.
Comment: In the table above, number of listings of entire rental units is summarised by RTZ and month.
## `summarise()` has grouped output by 'month'. You can override using the `.groups` argument.
Comment:
This graph shows less entire rental units available during summer months in RTZs and Non-RTZs. It is still unclear why.
Comment: When comparing daily rent rate and daily AirBnB, for most properties, it is more profitable to AirBnB.
Comment: The table above the shows the breakdown of which entire rental units should be rented out or leased out as AirBnB, when only the daily price and daily rent rate is to be considered.
Comment: However, when comparing total potential income (available nights * price) and annual income (rent_in_ireland.csv * 12), it seems that most landlords are missing out on the potential annual rent. THis could be due to the fact that the rental unit is not available all year around.
Comment: The table above the shows the breakdown of which entire rental units should be rented out or leased out as AirBnB, when only the daily price and daily rent rate is to be considered.
As previously stated, homeowners in RTZs (RPZs) are required to apply for planning permission if they let out their entire home (principal private residence) for short-term lets of more than 90 days in total while they are away. Principal private residence is the place where one ordinarily live.
Comment: There are very small amount of properties in the Rent Pressures Zones that are over 90 day threshold that would require planning permission.
Comment: Summary of the graph above, there are very small amount of properties in the Rent Pressures Zones that are over 90 day threshold that would require planning permission.
Comment: Entire rental units available in RTZs are more expensive than outside of RTZs. There is a slight difference between price between short-term lease and long-term lease.
Comment: There seems to be a difference in mininum nights to stay in Entire rental units available in RTZs are more expensive than outside of RTZs. Short-term lease is up to 15 days, so that is why is very small window of stay.
There is more entire rental units in Kerry than in other places in Ireland. When availability was examined, it was clear that not all entire rental units were available all year around. When examining the months of year, it is clear that there are less entire rental units available in the summer than other times of the year. It is unclear why this occurs and what is the landlord’s motivation behind this. Majority of stays of entire rental units are available for short-term stays (mininum nights under 14 days) and availability for the year is below 90 days. In RTZs, there are only 2,356 properties that require planning permission (availability over 90 days in the year and in RTZs). This would mean that there are over 2,000 properties that could be placed into long-term rental market to ease the Housing Crisis in Ireland. Analysis of potential income from rent vs AirBnB shows that most of the AirBnB earn less than the potential rental annual income. Of course, this is because most entire rental units on AirBnB are not available all year around, motivation for this is unclear.
A new dataset was created where AirBnB listings were selected that offered private rooms in a shared house. This new dataset was used for this section of the report.
Comment: Dublin has the most number of private rooms available, all of which are in the RTZ. However, the next three in the RTZ are: Kerry, Cork City and Galway City.
Comment: There are no visible difference between prices of private room AirBnB listings regardless of whether the AirBnB is in RTZ or County.
Comment: There are no visible difference between minimum nights required to stay in private room AirBnB listings regardless of whether the AirBnB is in RTZ or County.
Comment: When comparing daily rent rate and daily AirBnB, for most properties, it is more profitable to AirBnB.
Comment: However, when comparing total potential income (available nights * price) and annual income (rent_in_ireland.csv * 12), it seems that most landlords are missing out on the potential annual rent. THis could be due to the fact that the rental unit is not available all year around.
Comment: Above Map of Ireland, shows the availability of private rooms. It seems that there are a lot of private rooms that are not available all year around.
## `summarise()` has grouped output by 'month'. You can override using the `.groups` argument.
Comment: The graph above shows that regardless of RTZs, there are still less availability during the summer than winter.
## `summarise()` has grouped output by 'month'. You can override using the `.groups` argument.
Comment: In the table above, number of listings of private rooms is summarised by RTZ and month. A table of above illustration.
As previously stated, homeowners in RTZs (RPZs) are required to apply for planning permission if they let out their entire home (principal private residence) for short-term lets of more than 90 days in total while they are away. Principal private residence is the place where one ordinarily live. However, there is no threshold for private rooms. It is still interesting to examine this relationship
Comment: There are 2,124 private rooms that are available over 90 days in RTZs. If the same rules were applied to private rooms as entire rental units, then these properties would require planning permission.
Comment: There are absolutely no difference between private room listings inside and outside RTZs and term type (under/over-90). This means that regardless of nights stayed in RTZs, the price is very similar.
In a lot of counties, there are as many private rooms as there are entire rental units. Dublin has the most number of private rooms, all of which are in the RTZ. There are no planning permission required for long-term stays in RTZs with availability for over-90 days. In RTZs, there are only 3,011 private rooms available on AirBnB, while there are 3,152 private rooms outside RTZs. Most of the properties in Rent Pressure could be placed into long-term rental market to ease the Housing Crisis in Ireland. Analysis of potential income from rent vs AirBnB shows that most of the AirBnB earn less than the potential rental annual income. Of course, this is because most entire rental units on AirBnB are not available all year around, motivation for this is unclear.
There are 2,124 private rooms that are available over 90 days in RTZs. If the same rules were applied to private rooms as entire rental units, then these properties would require planning permission. Identifying this should help lobbyists of change to regulations to include private rooms in their cut-offs.
A new dataset was created where 5 AirBnB hosts with the most properties were selected. This new dataset was used for this section of the report.
## `summarise()` has grouped output by 'host_id'. You can override using the `.groups` argument.
Comment: Table above examines the AirBnB listings by counting the number of listings in RTZs for each host, ordering it in ascending order. One hosts has over 200 AirBnB listings.
Comment: Map of Ireland examines the location of AirBnB listings in RTZs for those Top hosts. By double clicking on the id in the legend, it possible to just select one host and examine the location of their AirBnBs in RTZs. Some hosts has several AirBnB listings in different counties. It is unclear how they manage their properties for AirBnB.
Comment: Dublin City has the most AirBnB hosts with properties regardless of room type. There are also more private rooms than entire rental units. Galway City and Cork City also have hosts that have many AirBnB listings. However, there are more entire rental units than private rooms in those cities.
There are individuals who hold a lot of property in RTZs. It is unclear how those individuals manage their properties around Ireland. It could be suggested that having too many properties on AirBnB should be part of planning permission. This would allow landlords to have constant tenants and not worry about managing their AirBnB properties around Ireland.
A new dataset was created where AirBnB listings were selected that offered student accommodation. This new dataset was used for this section of the report.
Comment: Table above shows the summary of accomodation for students by county. Galway City and Cork City have the highest mean rates, even higher than Dublin.
Comment: Although Galway City and Cork City are the most expensive for student accommodation, there is still more listings for Dublin City. There is only one Clare listing targetting students
Comment: AirBnB listings, that contain ‘student’ in name/description, have property in Dublin City, Cork City and Galway City.
Comment: By double clicking on the host_id in the legend, it is clear tha the host with host_id ‘226804666’ has property in Dublin, Cork and Galway.
Comment: There are 176 private rooms available in Dublin, comparing to four entire rental units targeting students in Dublin. Cork City and Galway City have more private rooms than entire renal units.
## `summarise()` has grouped output by 'room_type'. You can override using the `.groups` argument.
## `summarise()` has grouped output by 'county'. You can override using the `.groups` argument.
There are a lot of AirBnB listings targetting students in Dublin, however, Cork City and Galways City charge students more for this service, based on average. One hosts has 216 listings that target student, ranging in location. It is unclear why this host does not advertise on Daft.ie as long-term student accomodation. Most of the listings that taget students are private rooms, with very slim amount are entire rental units. It is unclear of the size of these entire rental units and why the listing is not on Daft.ie. It has also been shown that it is more profitable to rent the properties, in all but 5 properties. It could be argued that these listings should be on daft.ie advertised to students, not on AirBnB for short-term lease.
Comment: Above graph examines the number of homeless in each county or region, as reported by the government. Dublin has the highest number of homeless people than any other county or region.
Comment: When comparing AirBnB listing in the same county or region, it is clear that it is possible to place all homeless individuals into AirBnBs listings if these Listings became available for long-term lease.
There are concerns that AirBnB listings are reducing the supply of long-term leases in RPZs, which was shown to be true. The regulation that is being put forward by the government to dramatically decrease the number of AirBnB listings of entire rental units is very useful, however, this should also apply to private rooms in RPZs, which can be used by college students and young professionals. Entire rental units can be used by families or couples for long-term rent. Furthermore, it is unclear why the landlords choose to put their property on AirBnB when it has been showen that it is more profitable to rent the property when comparing potential AirBnB earning for the year (available nights * daily price) and potential annual rent earnings (rent per month * 12).
As previously stated, a lot of listings were placed as long-term listings when the pandemic hit, hopefully reducing the pressure on the housing crisis. However, as we continue to come out of the pandemic, we should worry about the return of lack of accommodation in RPZs because of tourist season and increase in AirBnB listings.
Data Although there were 34 columns of data in the final data, there are a few vital piece of information are missing. There are entire rental units (houses or apartments) that available for over 90 days of the year in Rent Pressurised Areas, which would require a planning permission. However, this poses a different question: - Why don’t AirBnB hosts have their properties available all year around? - Why do AirBnB hosts choose to place their property on AirBnB and not do long-term leasing? - Should the government create incentives for AirBnB hosts to lease their property for long-term? - Based on above question, perhaps, the government should review obstacles of long-term leasing.
Licence / Planning Permission After reading Data Dictionary provided AirBnB, it is unclear what is meant by column ‘licence’ in the AirBnB data. Data analysis at the beginning showed that there are no values in column ‘licence’ and it was dropped from analysis. However, this raises concerns that it be referring to the planning permission required by the local authorities from hosts in RPZ. Lack of planning permissions from the local authorities should be examined. AirBnB should seek planning permissions from their hosts if they meet the criteria for planning permission.
Solving the Homelessness Issue in Ireland Although the homeless data was used as an example of using AirBnB listings as long-term rental units, it is still flawed. A fraction of homeless individuals have addiction or mental health issues, for which they seek support for in homeless charities such as Simon Community and Focus Ireland. These charities have specific housing for individuals who require extra support in their permanent homes. This would mean that simply placing them on their own into a house supplied from AirBnB would not solve the underlying issues but just place them into further isolation.
However, it is clear that properties that are on AirBnB could have huge potential to reduce the pressure on the Housing Crisis. Reduction of entire rental units and private rooms available on AirBnB could help to increase the number of properties available in RPZs for long-term rental for young families and students. This could reduce the rent for all residents in RPZ as more rental units are available and stabilise the rental markets.
Burke, C. (2021) Rents continue to rise across Ireland as number of rental homes available hits ‘all-time low’, TheJournal.ie. Available at: https://www.thejournal.ie/daft-rental-report-all-time-low-5596453-Nov2021/ (Accessed: 17 December 2021).
Burke-Kennedy, E. (2021) Airbnb exodus increases stock of rental property in Dublin by 90%, The Irish Times. Available at: https://www.irishtimes.com/business/economy/airbnb-exodus-increases-stock-of-rental-property-in-dublin-by-90-1.4654155 (Accessed: 17 December 2021).
Citizensinformation.ie (no date) Renting your property for short-term lets. Citizensinformation.ie. Available at: https://www.citizensinformation.ie/en/housing/owning_a_home/home_owners/renting_your_property_for_shortterm_lets.html (Accessed: 17 December 2021).
Department of Housing, Local Government and Heritage (2021) Homeless Report - September 2021. Available at: https://www.gov.ie/en/publication/0d7a7-homeless-report-september-2021/ (Accessed: 19 December 2021).
Lyons, R. (2021) Irish Rental Report Q2 2021. Available at: https://ww1.daft.ie/report/ronan-lyons-2021q2-daftrentalprice?d_rd=1 (Accessed: 17 December 2021).
McGrath, D. (2021) Number of homeless people in Ireland rises for third month in a row – 8,212 adults and children now without home, Independent. Available at: https://www.independent.ie/irish-news/number-of-homeless-people-in-ireland-rises-for-third-month-in-a-row-8212-adults-and-children-now-without-home-40885752.html (Accessed: 19 December 2021).
Pope, C. (2021) New restrictions likely to reduce supply of short-term rental property, The Irish Times. Available at: https://www.irishtimes.com/business/new-restrictions-likely-to-reduce-supply-of-short-term-rental-property-1.4653404 (Accessed: 17 December 2021).
Residential Tenancies Board (2021) What are Rent Pressure Zones (RPZ)? Available at: https://www.rtb.ie/during-a-tenancy/rent-review-in-a-rent-pressure-zone-rpz?gclid=Cj0KCQiAzfuNBhCGARIsAD1nu-8YhjJPsVbhgWjuM0et4lZX2ansT4b4XkLEEx9G63vDiVsptSzv8toaAkdDEALw_wcB (Accessed: 19 December 2021).